<?php

/*

Desktopd Colors
Copyright (C) 2015  Desktopd Developer(s)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

https://www.gnu.org/licenses/agpl.html

*/


namespace Desktopd\Colors;


/*
    1x1 PNG-16 with RGB colors
*/

class PNG16PixelRGB extends PNGPixel {
    // width(4) height(4) bitdepth(1) colortype(1) compression(1) filter(1) interlace(1)
    const IHDR = "\x00\x00\x00\x01\x00\x00\x00\x01\x10\x02\x00\x00\x00";
    
    
    protected function buildPixel ($r, $g, $b) {
        return pack('n*', (int) $r, (int) $g, (int) $b);
    }
    
    public function __construct ($r, $g, $b, $sRGB = true) {
        $data = self::SIGNATURE;
        $data .= $this->buildChunk('IHDR', self::IHDR);
        if ($sRGB) {
            $data .= $this->buildChunk('sRGB', $this->sRGB());
            $data .= $this->buildChunk('gAMA', $this->gAMA());
            $data .= $this->buildChunk('cHRM', $this->cHRM());
        }
        $data .= $this->buildChunk('IDAT', $this->buildIDAT("\x00" . $this->buildPixel($r, $g, $b)));
        $data .= $this->buildChunk('IEND', '');
        $this->data = $data;
    }
}


// vim: ts=4 et ai

